const { adminModel } = require('../models/admin')
const { getToken } = require('../utils/jwt')

// 自定义中间件，需token权限
module.exports = async function (ctx, next) {
  let token = ctx.request.header.authorization;

  if (token === 'null' || !token) {
    // 没有传入token
    ctx.body = { status: 401, msg: '未传入token' }
  }
  else {
    let username = getToken(token);
    if (!username) {
      // token解密错误
      ctx.body = { status: 401, msg: '无效token' }
    }
    else {
      // 解密正确，确认数据库中有这个人
      let data = await adminModel.find({ username });
      if (!data.length) {
        // 没有这个用户
        ctx.body = { status: 401, msg: '没有这个用户' }
      }
      else {
        ctx['username'] = username;
        await next();
      }
    }
  }
}